home *** CD-ROM | disk | FTP | other *** search
/ Grand Slam 3 / Grand Slam 3.iso / 044 / fc022e-b.arj / INSTALL.MST < prev    next >
Text File  |  1995-04-24  |  20KB  |  684 lines

  1.  
  2.  
  3. '**************************************************************************
  4. '*                       Full Contact Gold Installation
  5. '**************************************************************************
  6.  
  7. '$DEFINE DEBUG  ''Define for script development/debugging
  8.  
  9. '$INCLUDE 'setupapi.inc'
  10. '$INCLUDE 'msdetect.inc'
  11.  
  12. ''Dialog ID's
  13. CONST SW_SHOWMAXIMIZED=3
  14. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  15. CONST BILL1        = 105
  16. CONST BILL2        = 106
  17. CONST BILL3        = 107
  18. CONST BILL4        = 108
  19. CONST BILL5        = 109
  20. CONST BILL6        = 110
  21. CONST BILL7        = 111
  22. CONST BILL8        = 112
  23. CONST BILL9        = 113
  24. CONST BILL10       = 114
  25. CONST WELCOME      = 100
  26. CONST ASKQUIT      = 200
  27. CONST DESTPATH     = 300
  28. CONST EXITFAILURE  = 400
  29. CONST EXITQUIT     = 600
  30. CONST EXITSUCCESS  = 700
  31. CONST OPTIONS      = 800
  32. CONST APPHELP      = 900
  33. CONST CUSTINST     = 6200
  34. CONST CDCONFIRMINFO = 7300
  35. CONST CDGETNAME     = 7400
  36. CONST CDGETNAMEORG  = 7500
  37. CONST CDGETORG      = 7600
  38. CONST UPDATEFILES    = 9900
  39. CONST TOOBIG       = 6300
  40. CONST BADPATH      = 6400
  41. CONST CHANGEPASSWORD = 9800
  42. CONST PASSWORDHELP = 1006
  43. CONST USERPROFILEHELP = 104
  44. ''Bitmap ID
  45. CONST LOGO         = 1
  46.  
  47. ''File Types
  48. CONST APPFILES     = 1
  49. CONST OPTFILES1    = 2
  50. CONST OPTFILES2    = 3
  51. CONST OPTFILES3    = 4
  52. CONST OPTFILES4    = 5
  53. CONST INSTALL      = 1
  54. CONST CHANGE       = 2
  55.  
  56. GLOBAL DEST$        ''Default destination directory.
  57. GLOBAL WINDRIVE$    ''Windows drive letter.
  58. GLOBAL OPT1OPT$     ''Option selection from OptFiles1 option dialog.
  59. GLOBAL OPT2OPT$     ''Option selection from OptFiles2 option dialog.
  60. GLOBAL OPT3OPT$     ''Option selection from OptFiles3 option dialog.
  61. GLOBAL OPT4OPT$     ''Option selection from OptFiles3 option dialog.
  62.  
  63. ''CustInst list symbol names
  64. GLOBAL APPNEEDS$    ''Option list costs per drive
  65. GLOBAL OPT1NEEDS$
  66. GLOBAL OPT2NEEDS$
  67. GLOBAL OPT3NEEDS$
  68. GLOBAL OPT4NEEDS$
  69. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  70. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  71.  
  72. ''Dialog list symbol names
  73. GLOBAL CHECKSTATES$
  74. GLOBAL STATUSTEXT$
  75. GLOBAL DRIVETEXT$
  76. GLOBAL INSTTYPE$
  77.  
  78.  
  79. DECLARE SUB AddOptFilesToCopyList (ftype%)
  80. DECLARE SUB RecalcOptFiles (ftype%)
  81. DECLARE SUB RecalcPath
  82. DECLARE SUB SetDriveStatus
  83. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  84.  
  85.  
  86.  
  87. INIT:
  88.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  89.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  90.  
  91.     SetBitmap CUIDLL$, LOGO
  92.     SetTitle "Full Contact Installation"
  93.     hWnd%=HwndFrame()
  94.     junk%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  95.     
  96.     AddToBillboardList CUIDLL$, BILL1 , "FModelessDlgProc" , 1
  97.     AddToBillboardList CUIDLL$, BILL2 , "FModelessDlgProc" , 1
  98.     AddToBillboardList CUIDLL$, BILL3 , "FModelessDlgProc" , 1
  99.     AddToBillboardList CUIDLL$, BILL4 , "FModelessDlgProc" , 1
  100.     AddToBillboardList CUIDLL$, BILL5 , "FModelessDlgProc" , 1
  101.     AddToBillboardList CUIDLL$, BILL6 , "FModelessDlgProc" , 1
  102.     AddToBillboardList CUIDLL$, BILL7 , "FModelessDlgProc" , 1
  103.     AddToBillboardList CUIDLL$, BILL8 , "FModelessDlgProc" , 1
  104.     AddToBillboardList CUIDLL$, BILL9 , "FModelessDlgProc" , 1
  105.     AddToBillboardList CUIDLL$, BILL10 , "FModelessDlgProc" , 1
  106.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  107.     IF szInf$ = "" THEN
  108.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  109.     END IF
  110.     ReadInfFile szInf$
  111.  
  112.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  113.     DEST$ = WINDRIVE$ + ":\FC"
  114.  
  115.     ''CustInst list symbols
  116.     CHECKSTATES$ = "CheckItemsState"
  117.     STATUSTEXT$  = "StatusItemsText"
  118.     DRIVETEXT$   = "DriveStatusText"
  119.     INSTTYPE$   = "InstallationType"
  120.     FOR i% = 1 TO 5 STEP 1
  121.         AddListItem INSTTYPE$, "ON"
  122.     NEXT i%
  123.     FOR i% = 1 TO 5 STEP 1
  124.         AddListItem CHECKSTATES$, "ON"
  125.     NEXT i%
  126.     FOR i% = 1 TO 5 STEP 1
  127.         AddListItem STATUSTEXT$, ""
  128.     NEXT i%
  129.     FOR i% = 1 TO 7 STEP 1
  130.         AddListItem DRIVETEXT$, ""
  131.     NEXT i%
  132.     ReplaceListItem DRIVETEXT$, 7, DEST$
  133.     ReplaceListItem INSTTYPE, 1, "ON"
  134.     ReplaceListItem INSTTYPE, 2, "OFF"
  135.  
  136.     ''Disk cost list symbols
  137.     APPNEEDS$   = "AppNeeds"
  138.     OPT1NEEDS$  = "Opt1Needs"
  139.     OPT2NEEDS$  = "Opt2Needs"
  140.     OPT3NEEDS$  = "Opt3Needs"
  141.     OPT4NEEDS$  = "Opt4Needs"
  142.     EXTRACOSTS$ = "ExtraCosts"
  143.     BIGLIST$    = "BigList"
  144.     FOR i% = 1 TO 5 STEP 1
  145.         AddListItem BIGLIST$, ""
  146.     NEXT i%
  147.     FOR i% = 1 TO 26 STEP 1
  148.         AddListItem EXTRACOSTS$, "0"
  149.     NEXT i%
  150.  
  151.     ''File Option Variables
  152.     OPT1OPT$ = "1"
  153.     OPT2OPT$ = "1"
  154.     OPT3OPT$ = "1"
  155.     OPT4OPT$ = "1"
  156.  
  157.     RecalcPath
  158.     SetDriveStatus
  159.  
  160. '$IFDEF DEBUG
  161.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  162. '$ENDIF ''DEBUG
  163.  
  164. WELCOME:
  165.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FWelcomeDlgProc", PASSWORDHELP, HELPPROC$)
  166.     IF sz$ = "EXIT" THEN
  167.       GOSUB ASKQUIT
  168.       GOTO WELCOME
  169.     END IF  
  170.     IF GetListItem(INSTTYPE$, INSTALL) = "ON" THEN 
  171.        GOTO CUSTINST
  172.     END IF
  173.     IF GetListItem(INSTTYPE$, CHANGE) = "ON" THEN 
  174.        GOTO UPDATEPASSWORD
  175.     END IF                
  176. UPDATEPASSWORD:
  177. ' Update existing password
  178.     sz$ = UIStartDlg(CUIDLL$, CHANGEPASSWORD, "FUpdatePasswordDlgProc", APPHELP, HELPPROC$)
  179.     IF sz$ = "CONTINUE" THEN
  180.       GOTO CHANGEPASSWORD
  181.     END IF
  182.     IF sz$ = "EXIT" THEN
  183.       GOTO QUIT
  184.     END IF
  185.     IF sz$ = "CONTINUE" THEN
  186.       GOTO CHANGEPASSWORD
  187.     END IF
  188.  
  189. CHANGEPASSWORD:
  190.    GOTO QUIT
  191.     
  192. CUSTINST:
  193.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", USERPROFILEHELP, HELPPROC$)
  194.     IF sz$ = "EXIT" THEN
  195.       GOSUB ASKQUIT
  196.       GOTO CUSTINST
  197.     ELSEIF sz$ = "CONTINUE" THEN
  198.         ''Install only if it will fit.
  199.         FOR i% = 1 TO 5 STEP 1
  200.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  201.                 GOSUB TOOBIG
  202.                 GOTO CUSTINST
  203.             END IF
  204.         NEXT i%
  205.         UIPop 1
  206.         GOTO INSTALL
  207.     ELSEIF sz$ = "PATH" THEN
  208.         GOTO GETPATH
  209.     ELSEIF sz$ = "CHK1" THEN
  210.         RecalcOptFiles APPFILES
  211.         SetDriveStatus
  212.         GOTO CUSTINST
  213.     ELSEIF sz$ = "CHK2" THEN
  214.         RecalcOptFiles OPTFILES1
  215.         SetDriveStatus
  216.         GOTO CUSTINST
  217.     ELSEIF sz$ = "CHK3" THEN
  218.         RecalcOptFiles OPTFILES2
  219.         SetDriveStatus
  220.         GOTO CUSTINST
  221.     ELSEIF sz$ = "CHK4" THEN
  222.         RecalcOptFiles OPTFILES3
  223.         SetDriveStatus
  224.         GOTO CUSTINST
  225.     ELSEIF sz$ = "CHK5" THEN
  226.         RecalcOptFiles OPTFILES4
  227.         SetDriveStatus
  228.         GOTO CUSTINST
  229.     ELSEIF sz$ = "BTN2" THEN
  230.         GOTO OPTFILES1
  231.     ELSEIF sz$ = "BTN3" THEN
  232.         GOTO OPTFILES2
  233.     ELSEIF sz$ = "BTN4" THEN
  234.         GOTO OPTFILES3
  235.     ELSEIF sz$ = "REACTIVATE" THEN
  236.         RecalcPath
  237.         SetDriveStatus
  238.         GOTO CUSTINST
  239.     ELSE
  240.         GOSUB ASKQUIT
  241.         GOTO CUSTINST
  242.     END IF
  243.  
  244.  
  245. INSTALL:
  246.     ClearCopyList
  247.     AddOptFilesToCopyList APPFILES
  248.     AddOptFilesToCopyList OPTFILES1
  249.     AddOptFilesToCopyList OPTFILES2
  250.     AddOptFilesToCopyList OPTFILES3
  251.     AddOptFilesToCopyList OPTFILES4
  252.     CreateDir DEST$, cmoNone
  253.     CreateDir MakePath(DEST$,"print"), cmoNone
  254.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  255.     WriteToLogFile ""
  256.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  257.     WriteToLogFile ""
  258.     WriteToLogFile "May have had to create the directory: " + DEST$
  259.     WriteToLogFile ""
  260.     CopyFilesInCopyList
  261.  
  262.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  263.         CreateProgmanGroup "Full Contact", "", cmoNone
  264.         ShowProgmanGroup  "Full Contact", 1, cmoNone
  265.         CreateProgmanItem "Full Contact", "Full Contact", MakePath(DEST$,"fc.exe"), "", cmoOverwrite
  266.         CreateProgmanItem "Full Contact", "Help", MakePath(DEST$,"help\ccm.hlp"), "", cmoOverwrite
  267.         CreateProgmanItem "Full Contact", "Tutorial", MakePath(DEST$,"help\tut.hlp"), "", cmoOverwrite
  268.         CreateProgmanItem "Full Contact", "Order", MakePath(DEST$,"document\order.wri"), "", cmoOverwrite
  269.     END IF
  270.     IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  271.         CreateProgmanGroup "Full Contact", "", cmoNone
  272.         ShowProgmanGroup  "Full Contact", 1, cmoNone
  273.         CreateProgmanItem "Full Contact", "Personalisation", MakePath(DEST$,"dm.exe"), "", cmoOverwrite
  274.         CreateProgmanItem "Full Contact", "Personalisation Help", MakePath(DEST$,"help\cg.hlp"), "", cmoOverwrite
  275.     END IF
  276.     CloseLogFile
  277.  
  278. UPDATEDB:
  279.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", USERPROFILEHELP, HELPPROC$)
  280.  
  281. QUIT:
  282.     ON ERROR GOTO ERRQUIT
  283.  
  284.     IF ERR = 0 THEN
  285.         dlg% = EXITSUCCESS
  286.     ELSEIF ERR = STFQUIT THEN
  287.         dlg% = EXITQUIT
  288.     ELSE
  289.         dlg% = EXITFAILURE
  290.     END IF
  291. QUITL1:
  292.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  293.     IF sz$ = "REACTIVATE" THEN
  294.         GOTO QUITL1
  295.     END IF
  296.     UIPop 1
  297.  
  298.     END
  299.  
  300. ERRQUIT:
  301.     i% = DoMsgBox("Setup sources were corrupted, call 55.21.256-2464!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  302.     END
  303.  
  304.  
  305.  
  306. GETPATH:
  307.     SetSymbolValue "EditTextIn", DEST$
  308.     SetSymbolValue "EditFocus", "END"
  309. GETPATHL1:
  310.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  311.  
  312.     IF sz$ = "CONTINUE" THEN
  313.         olddest$ = DEST$
  314.         DEST$ = GetSymbolValue("EditTextOut")
  315.  
  316.         ''Validate new path.
  317.         IF IsDirWritable(DEST$) = 0 THEN
  318.             GOSUB BADPATH
  319.             GOTO GETPATHL1
  320.         END IF
  321.         UIPop 1
  322.  
  323.         ''Truncate display if too long.
  324.         IF LEN(DEST$) > 23 THEN
  325.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  326.         ELSE
  327.             ReplaceListItem DRIVETEXT$, 7, DEST$
  328.         END IF
  329.  
  330.         ''Recalc if path changed.
  331.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  332.             RecalcPath
  333.             SetDriveStatus
  334.         END IF
  335.  
  336.         olddest$ = ""
  337.         GOTO CUSTINST
  338.     ELSEIF sz$ = "REACTIVATE" THEN
  339.         RecalcPath
  340.         SetDriveStatus
  341.         GOTO GETPATHL1
  342.     ELSEIF sz$ = "EXIT" THEN
  343.         GOSUB ASKQUIT
  344.         GOTO GETPATHL1
  345.     ELSE
  346.         UIPop 1
  347.         GOTO CUSTINST
  348.     END IF
  349.  
  350.  
  351.  
  352. OPTFILES1:
  353.     SetSymbolValue "RadioDefault", OPT1OPT$
  354. OPT1L1:
  355.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  356.     newopt$ = GetSymbolValue("ButtonChecked")
  357.  
  358.     IF sz$ = "CONTINUE" THEN
  359.         UIPop 1
  360.         IF newopt$ <> OPT1OPT$ THEN
  361.             OPT1OPT$ = newopt$
  362.             RecalcOptFiles OPTFILES1
  363.             SetDriveStatus
  364.         END IF
  365.         newopt$ = ""
  366.         GOTO CUSTINST
  367.     ELSEIF sz$ = "REACTIVATE" THEN
  368.         RecalcPath
  369.         SetDriveStatus
  370.         GOTO OPT1L1
  371.     ELSEIF sz$ = "EXIT" THEN
  372.         GOSUB ASKQUIT
  373.         GOTO OPT1L1
  374.     ELSE
  375.         UIPop 1
  376.         newopt$ = ""
  377.         GOTO CUSTINST
  378.     END IF
  379.  
  380.  
  381.  
  382. OPTFILES2:
  383.     SetSymbolValue "RadioDefault", OPT2OPT$
  384. OPT2L1:
  385.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  386.     newopt$ = GetSymbolValue("ButtonChecked")
  387.  
  388.     IF sz$ = "CONTINUE" THEN
  389.         UIPop 1
  390.         IF newopt$ <> OPT2OPT$ THEN
  391.             OPT2OPT$ = newopt$
  392.             RecalcOptFiles OPTFILES2
  393.             SetDriveStatus
  394.         END IF
  395.         newopt$ = ""
  396.         GOTO CUSTINST
  397.     ELSEIF sz$ = "REACTIVATE" THEN
  398.         RecalcPath
  399.         SetDriveStatus
  400.         GOTO OPT2L1
  401.     ELSEIF sz$ = "EXIT" THEN
  402.         GOSUB ASKQUIT
  403.         GOTO OPT2L1
  404.     ELSE
  405.         UIPop 1
  406.         newopt$ = ""
  407.         GOTO CUSTINST
  408.     END IF
  409.  
  410.  
  411. OPTFILES3:
  412.     SetSymbolValue "RadioDefault", OPT3OPT$
  413. OPT3L1:
  414.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  415.     newopt$ = GetSymbolValue("ButtonChecked")
  416.  
  417.     IF sz$ = "CONTINUE" THEN
  418.         UIPop 1
  419.         IF newopt$ <> OPT3OPT$ THEN
  420.             OPT3OPT$ = newopt$
  421.             RecalcOptFiles OPTFILES3
  422.             SetDriveStatus
  423.         END IF
  424.         newopt$ = ""
  425.         GOTO CUSTINST
  426.     ELSEIF sz$ = "REACTIVATE" THEN
  427.         RecalcPath
  428.         SetDriveStatus
  429.         GOTO OPT3L1
  430.     ELSEIF sz$ = "EXIT" THEN
  431.         GOSUB ASKQUIT
  432.         GOTO OPT3L1
  433.     ELSE
  434.         UIPop 1
  435.         newopt$ = ""
  436.         GOTO CUSTINST
  437.     END IF
  438.  
  439. OPTFILES4:
  440.     SetSymbolValue "RadioDefault", OPT4OPT$
  441. OPT4L1:
  442.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  443.     newopt$ = GetSymbolValue("ButtonChecked")
  444.  
  445.     IF sz$ = "CONTINUE" THEN
  446.         UIPop 1
  447.         IF newopt$ <> OPT4OPT$ THEN
  448.             OPT4OPT$ = newopt$
  449.             RecalcOptFiles OPTFILES4
  450.             SetDriveStatus
  451.         END IF
  452.         newopt$ = ""
  453.         GOTO CUSTINST
  454.     ELSEIF sz$ = "REACTIVATE" THEN
  455.         RecalcPath
  456.         SetDriveStatus
  457.         GOTO OPT4L1
  458.     ELSEIF sz$ = "EXIT" THEN
  459.         GOSUB ASKQUIT
  460.         GOTO OPT4L1
  461.     ELSE
  462.         UIPop 1
  463.         newopt$ = ""
  464.         GOTO CUSTINST
  465.     END IF
  466.  
  467.  
  468. TOOBIG:
  469.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  470.     IF sz$ = "REACTIVATE" THEN
  471.         RecalcPath
  472.         SetDriveStatus
  473.         GOTO TOOBIG
  474.     END IF
  475.     UIPop 1
  476.     RETURN
  477.  
  478.  
  479.  
  480. BADPATH:
  481.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  482.     IF sz$ = "REACTIVATE" THEN
  483.         RecalcPath
  484.         SetDriveStatus
  485.         GOTO BADPATH
  486.     END IF
  487.     UIPop 1
  488.     RETURN
  489.  
  490.  
  491.  
  492. ASKQUIT:
  493.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  494.  
  495.     IF sz$ = "EXIT" THEN
  496.         UIPopAll
  497.         ERROR STFQUIT
  498.     ELSEIF sz$ = "REACTIVATE" THEN
  499.         GOTO ASKQUIT
  500.     ELSE
  501.         UIPop 1
  502.     END IF
  503.     RETURN
  504.  
  505.  
  506.  
  507. '**
  508. '** Purpose:
  509. '**     Adds the specified option files to the copy list.
  510. '** Arguments:
  511. '**     ftype%  - type of files to add, one of the following:
  512. '**             APPFILES, OPTFILES1, OPTFILES2
  513. '** Returns:
  514. '**     none.
  515. '*************************************************************************
  516. SUB AddOptFilesToCopyList (ftype%) STATIC
  517.  
  518.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  519.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  520.         IF ftype% = APPFILES THEN
  521.             AddSectionFilesToCopyList "baseFiles", SrcDir$, DEST$
  522.             AddSectionFilesToCopyList "datFiles", SrcDir$, MakePath(DEST$,"dat")
  523.             AddSectionFilesToCopyList "adminFiles", SrcDir$, MakePath(DEST$,"admin")
  524.             AddSectionFilesToCopyList "helpFiles", SrcDir$, MakePath(DEST$,"Help")
  525.             AddSectionFilesToCopyList "reportFiles", SrcDir$, MakePath(DEST$,"rep")
  526.             AddSectionFilesToCopyList "documentFiles", SrcDir$, MakePath(DEST$,"document")
  527.         ELSEIF ftype% = OPTFILES1 THEN
  528.             AddSectionFilesToCopyList "exampleFiles",  SrcDir$, MakePath(DEST$,"Example")
  529.             AddSectionFilesToCopyList "exambckFiles",  SrcDir$, MakePath(DEST$,"Example\bck")
  530.             AddSectionFilesToCopyList "training", SrcDir$, MakePath(DEST$,"Training")
  531.         ELSEIF ftype% = OPTFILES2 THEN
  532.             AddSectionFilesToCopyList "datFiles", SrcDir$, MakePath(DEST$,"Formsd")
  533.             AddSectionFilesToCopyList "persBase", SrcDir$, DEST$
  534.         ELSEIF ftype% = OPTFILES3 THEN
  535.             AddSectionFilesToCopyList "massMailing", SrcDir$, DEST$
  536.         ELSEIF ftype% = OPTFILES4 THEN
  537.             AddSectionFilesToCopyList "Order", SrcDir$, DEST$
  538.         END IF
  539.         SrcDir$ = ""
  540.     END IF
  541. END SUB
  542.  
  543.  
  544. '**
  545. '** Purpose:
  546. '**     Recalculates disk space for the given option files and sets
  547. '**     the status info symbol "StatusItemsText".
  548. '** Arguments:
  549. '**     ftype% - type of files to add, one of the following:
  550. '**             APPFILES, OPTFILES1, OPTFILES2
  551. '** Returns:
  552. '**     none.
  553. '*************************************************************************
  554. SUB RecalcOptFiles (ftype%) STATIC
  555.     CursorSave% = ShowWaitCursor()
  556.     ClearCopyList
  557.     AddOptFilesToCopyList ftype%
  558.  
  559.     fExtra% = 0
  560.     IF ftype% = APPFILES THEN
  561.         ListSym$ = APPNEEDS$
  562.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  563.             ''Add extra cost to Windows drive for ini/progman, etc.
  564.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  565.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  566.             fExtra% = 1
  567.         END IF
  568.     ELSEIF ftype% = OPTFILES1 THEN
  569.         ListSym$ = OPT1NEEDS$
  570.     ELSEIF ftype% = OPTFILES2 THEN
  571.         ListSym$ = OPT2NEEDS$
  572.     ELSEIF ftype% = OPTFILES3 THEN
  573.         ListSym$ = OPT3NEEDS$
  574.     ELSEIF ftype% = OPTFILES4 THEN
  575.         ListSym$ = OPT4NEEDS$
  576.     END IF
  577.  
  578.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  579.  
  580.     cost& = 0
  581.     FOR i% = 1 TO 26 STEP 1
  582.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  583.     NEXT i%
  584.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  585.  
  586.     IF StillNeed& > 0 THEN
  587.         ReplaceListItem BIGLIST$, ftype%, "YES"
  588.     ELSE
  589.         ReplaceListItem BIGLIST$, ftype%, ""
  590.     END IF
  591.  
  592.     IF fExtra% THEN
  593.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  594.     END IF
  595.     RestoreCursor CursorSave%
  596.     ListSym$ = ""
  597. END SUB
  598.  
  599.  
  600. '**
  601. '** Purpose:
  602. '**     Recalculates disk space and sets option status info according
  603. '**     to the current destination path.
  604. '** Arguments:
  605. '**     none.
  606. '** Returns:
  607. '**     none.
  608. '*************************************************************************
  609. SUB RecalcPath STATIC
  610.  
  611.     CursorSave% = ShowWaitCursor()
  612.  
  613.     RecalcOptFiles APPFILES
  614.     RecalcOptFiles OPTFILES1
  615.     RecalcOptFiles OPTFILES2
  616.     RecalcOptFiles OPTFILES3
  617.     RecalcOptFiles OPTFILES4
  618.  
  619.     RestoreCursor CursorSave%
  620. END SUB
  621.  
  622.  
  623. '**
  624. '** Purpose:
  625. '**     Sets drive status info according to latest disk space calcs.
  626. '** Arguments:
  627. '**     none.
  628. '** Returns:
  629. '**     none.
  630. '*************************************************************************
  631. SUB SetDriveStatus STATIC
  632.  
  633.     drive$ = MID$(DEST$, 1, 1)
  634.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  635.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))+ VAL(GetListItem(OPT3NEEDS$, ndrive%))+ VAL(GetListItem(OPT4NEEDS$, ndrive%))
  636.     free& = GetFreeSpaceForDrive(drive$)
  637.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  638.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  639.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  640.  
  641.     IF drive$ = WINDRIVE$ THEN
  642.         ReplaceListItem DRIVETEXT$, 4, ""
  643.         ReplaceListItem DRIVETEXT$, 5, ""
  644.         ReplaceListItem DRIVETEXT$, 6, ""
  645.     ELSE
  646.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  647.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%)) + VAL(GetListItem(OPT4NEEDS$, ndrive%))
  648.         IF cost& = 0 THEN
  649.             ReplaceListItem DRIVETEXT$, 4, ""
  650.             ReplaceListItem DRIVETEXT$, 5, ""
  651.             ReplaceListItem DRIVETEXT$, 6, ""
  652.         ELSE
  653.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  654.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  655.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  656.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  657.         END IF
  658.     END IF
  659. END SUB
  660.  
  661.  
  662. '**
  663. '** Purpose:
  664. '**     Appends a file name to the end of a directory path,
  665. '**     inserting a backslash character as needed.
  666. '** Arguments:
  667. '**     szDir$  - full directory path (with optional ending "\")
  668. '**     szFile$ - filename to append to directory
  669. '** Returns:
  670. '**     Resulting fully qualified path name.
  671. '*************************************************************************
  672. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  673.     IF szDir$ = "" THEN
  674.         MakePath = szFile$
  675.     ELSEIF szFile$ = "" THEN
  676.         MakePath = szDir$
  677.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  678.         MakePath = szDir$ + szFile$
  679.     ELSE
  680.         MakePath = szDir$ + "\" + szFile$
  681.     END IF
  682. END FUNCTION
  683.  
  684.